package com.buobao.restful.controller;

import com.buobao.restful.entity.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

//@Controller
@RestController  //使用这个注解就不需要每个方法上都使用@ResponseBody了,当然在不需要restful的controller中还是不建议使用这个注解的
@RequestMapping("/restful")
//@CrossOrigin(origins = {"http://localhost:8080"}, maxAge = 3600)  //这里配置允许跨域访问的地址,时间设置的是1小时针对的是发杂请求多长时间内不需要发送预检请求
//@CrossOrigin(origins = "*")  //这里配置允许跨域访问的地址
public class RestfulController {

    @GetMapping("/request")
//    @ResponseBody
    public String doGetRestful(){
        return "{\"message\":\"返回查询结果\"}";
    }

    @PostMapping("/request")
//    @ResponseBody
    public String doPostRestful(Person person){
        System.out.println("person:"+person.getName());
        return "{\"message\":\"数据新建成功\"}";
    }

    @PutMapping("/request")
//    @ResponseBody
    public String doPutRestful(Person person){
        System.out.println("person:"+person.getName());
        return "{\"message\":\"数据跟新成功\"}";
    }

    @DeleteMapping("/request")
//    @ResponseBody
    public String doDeleteRestful(){
        return "{\"message\":\"数据删除成功\"}";
    }

    //如何通过path传参
    @GetMapping("/request/{userId}")
    public String pathParamTest(@PathVariable("userId") String userId) {
        return "{\"message\":\"id:"+userId+"\"}";
    }



    //以下是使用jackson返回json的示例
    //基本上只要将jackson的依赖引入，springmvc就自然支持将数据转成json返回了
    @GetMapping("/person/{id}")
    public Person findByPersonById(@PathVariable("id") Integer id) {
        Person person = new Person();
        if (id == 1) {
            person.setName("James");
            person.setAge(30);
        } else {
            person.setName("Tom");
            person.setAge(22);
        }
        return person;
    }

    @GetMapping("/persons")
    public List<Person> findPersons() {
        List<Person> personList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Person person = new Person();
            person.setAge(i);
            person.setName("person" + i);
            person.setBirthday(new Date());
            personList.add(person);
        }
        return personList;
    }
}
